const fs = require('fs');
// 异步调用方式一

// fs.readFile('package.json',(err,data)=>{
//     if (err) return console.log(err);
//     data = JSON.parse(data);
//     console.log(data.name);
// });

// 异步调用方式二

function readFileAsync(path) {
    return new Promise((resolve,reject)=> {
        fs.readFile(path,(err,data)=>{
            if (err) return reject(err)
            else resolve(data);
        });
    })
}
readFileAsync('package.json').then(data=>{
    data = JSON.parse(data)
    console.log(data.name);
}).catch(err=>{
    console.log(err);
});

// 异步调用方式三

const util = require('util');

const readFile = util.promisify(fs.readFile);
readFile('package.json').then((data) => {
    data = JSON.parse(data)
    console.log(data.name);
}).catch((error) => {
    console.log(error);
});

// 异步回调Promise建议用方式三，是比较新的方式

// 异步调用方式四 async await